package com.fhz.a2102shopjava.api;

import androidx.lifecycle.LiveData;

import com.fhz.a2102shopjava.callback.ApiResponse;
import com.fhz.a2102shopjava.entity.Banner;
import com.fhz.a2102shopjava.entity.Category;
import com.fhz.a2102shopjava.entity.GoodsInfo;
import com.fhz.a2102shopjava.entity.ResponseBean;
import com.fhz.a2102shopjava.entity.ShoppingCart;
import com.fhz.a2102shopjava.ui.login.data.model.LoggedInUser;

import java.util.List;

import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 时间:2023/8/15
 *
 * @author Mr.Feng
 * 简述: 我的后台接口
 */

public interface FengService {

    /**
     * 首页中的banner
     * @param type
     * @param page
     * @param pageSize
     * @return
     */
    @GET("banner/select")
    LiveData<ApiResponse<ResponseBean<List<Banner>>>> getBannerByType(@Query("type") int type, @Query("page") int page, @Query("pageSize") int pageSize);

    /**
     * 首页中的列表
     * @param page
     * @param pageSize
     * @return
     */
    @GET("goods/select/{page}/{pageSize}")
    LiveData<ApiResponse<ResponseBean<List<GoodsInfo>>>> getGoodsInfo(@Path("page") int page, @Path("pageSize") int pageSize);



    @POST("user/login")
    @FormUrlEncoded
    LiveData<ApiResponse<LoggedInUser>> login(@Field("nickname") String nickname, @Field("password") String password);


    /**
     * 七牛上传图片的token
     * @return 后端生成的字符串
     */
    @GET("qiniu/token")
    LiveData<ApiResponse<String>> getQiNiuToken();


    /**
     * 修改用户头像
     * 在请求头中,必须要添加token
     */
    @POST("user/update/headImg")
    @FormUrlEncoded
    LiveData<ApiResponse<String>> updateUserAvatar(@Field("nickname") String nickname,@Field("headImg") String headImg);


    /**
     * 请求分类数据
     */
    @GET("/category/getType")
    LiveData<ApiResponse<List<Category>>> getCategory(@Query("type") int type);

    /**
     * 注册
     */
    @POST("/user/register")
    LiveData<ApiResponse<LoggedInUser>> register(@Body LoggedInUser hUser);


    /**
     * 根据id查询购车商品
     * //继续
     */
//    @GET("/orderGoods/getAllByUser")
//    LiveData<ApiResponse<List<Orders>>> getOrderByUserId(@Query("userId") int userId,@Query("state") int state);

    /**
     * 添加到购物车
     */
    @POST("/cart/add")
    LiveData<ApiResponse<List<ShoppingCart>>> addCart(@Body ShoppingCart cart);

    /**
     * 添加到购物车
     */
    @GET("/cart/getAllByUserId")
    LiveData<ApiResponse<List<ShoppingCart>>> getAllByUserId(@Query("userId") int userId);


    /**
     * 更新购物车数量
     * @param cartId
     * @param num  1,代表加,-1代表减去,其他值是具体要修改的值
     * @return
     */
    @GET("/cart/update/num")
    LiveData<ApiResponse<ShoppingCart >> updateNum(@Query("cartId") int cartId,@Query("num") int num);
}
